{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "3366302e-0a9a-4588-b9e8-934564d26ab7",
   "metadata": {},
   "source": [
    "【1】"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef6d2266-10e9-4ee9-873c-878e6daf8ee2",
   "metadata": {},
   "source": [
    "基础/平滑折线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "becd4580-c25b-4f57-a93e-61a44f86659b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'D:\\\\jupyter\\\\基础平滑带样式的折线图.html'"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts.charts import Line  # 加载折线图模块\n",
    "from pyecharts.globals import ThemeType\n",
    "from pyecharts.globals import JsCode\n",
    "import pyecharts.options as opts\n",
    "import pandas as pd\n",
    "data = pd.read_excel('./data/subject.xlsx')\n",
    "# 将‘month’列转换为字符串形式的年月  转换成字符串方便在网页中显示\n",
    "data['Month'] = data['Month'].apply(lambda x: x.strftime('%Y-%m'))\n",
    "\n",
    "# 提取名为\"AI-NLP\"的数据，并将“month”，‘average’，‘peak’转换为列表\n",
    "data_pair = data[data['Name']=='AI-NLP'][['Month','Average','Peak']].values.tolist()\n",
    "\n",
    "# 定义线条样式\n",
    "style_1 = {\"normal\":{'color':'#00ca95',\n",
    "                    \"shadowColor\":'rgba(0,0,0,.3)',\n",
    "                    \"shadowBlur\":0,\n",
    "                    \"shadowOffSetY\":2,\n",
    "                    \"shadowOffSetX\":2,\n",
    "                    \"width\":2}}\n",
    "style_2 = {\"normal\":{'color':'#FF69B4',\n",
    "                    \"shadowColor\":'rgba(0,0,0,.3)',\n",
    "                    \"shadowBlur\":0,\n",
    "                    \"shadowOffSetY\":2,\n",
    "                    \"shadowOffSetX\":2,\n",
    "                    \"width\":2}}\n",
    "\n",
    "# 创建折线图\n",
    "line = (Line(init_opts=opts.InitOpts(ThemeType.LIGHT))\n",
    "        .add_xaxis([i[0] for i in data_pair][::-1]) # 添加x轴数据\n",
    "        .add_yaxis('kaggle竞赛平均在线人数',[i[1]/10000 for i in data_pair][::-1], # 添加y轴数据（平均在线人数）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   is_symbol_show=False,  # 不显示标记符号\n",
    "                   linestyle_opts=style_1 # 添加线条样式 完成y轴整个属性的添加\n",
    "                  )\n",
    "        .add_yaxis('kaggle竞赛平均在线峰值',[i[2]/10000 for i in data_pair][::-1], # 添加y轴数据（平均在线人数）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   is_symbol_show=False,  # 不显示标记符号\n",
    "                   linestyle_opts=style_2 # 添加线条样式 完成y轴整个属性的添加\n",
    "                  )\n",
    "        .set_global_opts(\n",
    "            title_opts=opts.TitleOpts(title='基础平滑带样式折线图-统计当地kaggle在线人数和峰值'),\n",
    "            tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross') # 设置提示框\n",
    "        )\n",
    "        .set_series_opts(\n",
    "            label_opts=opts.LabelOpts(is_show=False),\n",
    "            # 折线图要想显示文字，则必须使用markpoint_opts中加入MarkPointItem 切记与柱形图做法不一样\n",
    "            markpoint_opts=opts.MarkPointOpts(data=[\n",
    "                opts.MarkPointItem(type_='max',name='最大值'),\n",
    "                opts.MarkPointItem(type_='min',name='最小值'),\n",
    "            ])\n",
    "        )\n",
    "    )\n",
    "line.render('基础平滑带样式的折线图.html')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0127dbe3-e214-4b06-b74b-e57adbb9f3ea",
   "metadata": {},
   "source": [
    "【2】"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "80b00a05-139c-44b0-9816-7f5cfd10d554",
   "metadata": {},
   "source": [
    "基础折线图-自定义色段"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "44b7c978-ea27-4433-86e1-497709286bc0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'D:\\\\jupyter\\\\基础色段的折线图.html'"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts.charts import Line  # 加载折线图模块\n",
    "from pyecharts.globals import ThemeType\n",
    "from pyecharts.globals import JsCode\n",
    "import pyecharts.options as opts\n",
    "import pandas as pd\n",
    "data = pd.read_excel('./data/subject.xlsx')\n",
    "# 将‘month’列转换为字符串形式的年月  转换成字符串方便在网页中显示\n",
    "data['Month'] = data['Month'].apply(lambda x: x.strftime('%Y-%m'))\n",
    "\n",
    "# 提取名为\"AI-NLP\"的数据，并将“month”，‘average’，‘peak’转换为列表\n",
    "data_pair = data[data['Name']=='AI-NLP'][['Month','Average','Peak']].values.tolist()\n",
    "\n",
    "# 定义线条样式\n",
    "style_1 = {\"normal\":{\n",
    "                    \"shadowColor\":'rgba(0,0,0,.3)',\n",
    "                    \"shadowBlur\":0,\n",
    "                    \"shadowOffSetY\":2,\n",
    "                    \"shadowOffSetX\":2,\n",
    "                    \"width\":2}}\n",
    "style_2 = {\"normal\":{\n",
    "                    \"shadowColor\":'rgba(0,0,0,.3)',\n",
    "                    \"shadowBlur\":0,\n",
    "                    \"shadowOffSetY\":2,\n",
    "                    \"shadowOffSetX\":2,\n",
    "                    \"width\":2}}\n",
    "# 创建折线图\n",
    "line = (Line(init_opts=opts.InitOpts(ThemeType.LIGHT))\n",
    "        .add_xaxis([i[0] for i in data_pair][::-1]) # 添加x轴数据\n",
    "        .add_yaxis('kaggle竞赛平均在线人数',[i[1]/10000 for i in data_pair][::-1], # 添加y轴数据（平均在线人数）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   is_symbol_show=False,  # 不显示标记符号\n",
    "                   linestyle_opts=style_1 # 添加线条样式 完成y轴整个属性的添加\n",
    "                  )\n",
    "        .add_yaxis('kaggle竞赛平均在线峰值',[i[2]/10000 for i in data_pair][::-1], # 添加y轴数据（）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   is_symbol_show=False,  # 不显示标记符号\n",
    "                   linestyle_opts=style_2 # 添加线条样式 完成y轴整个属性的添加\n",
    "                  )\n",
    "        .set_global_opts(\n",
    "            title_opts=opts.TitleOpts(title='基础平滑自定义色段折线图-统计当地kaggle在线人数和峰值'),\n",
    "            tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross'), # 设置提示框\n",
    "\n",
    "            \n",
    "            visualmap_opts=opts.VisualMapOpts(\n",
    "                is_show=False,  # 隐藏视觉映射\n",
    "                is_piecewise=True,  # 分段显示\n",
    "                pieces=[\n",
    "                    {'min':150,'color':'#7f1100'},\n",
    "                    {'min':120,'max':149,'color':'#0764e5'},\n",
    "                    {'min':90,'max':119,'color':'#00c5d2'},\n",
    "                    {'min':60,'max':89,'color':'#ffc5d2'},\n",
    "                    {'min':30,'max':59,'color':'#4e70ef'},\n",
    "                    {'min':1,'max':29,'color':'#ff812c'}\n",
    "                ]\n",
    "            ),\n",
    "            yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)) # 显示y轴分割线\n",
    "        )\n",
    "        .set_series_opts(\n",
    "            label_opts=opts.LabelOpts(is_show=False),\n",
    "            # 折线图要想显示文字，则必须使用markpoint_opts中加入MarkPointItem 切记与柱形图做法不一样\n",
    "            markpoint_opts=opts.MarkPointOpts(data=[\n",
    "                opts.MarkPointItem(type_='max',name='最大值'),\n",
    "                opts.MarkPointItem(type_='min',name='最小值'),\n",
    "            ])\n",
    "        )\n",
    "    )\n",
    "line.render('基础色段的折线图.html')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b0475f3d-bbc3-4fa7-b861-e35bf5a935fe",
   "metadata": {},
   "source": [
    "【3】"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19a4d0de-681a-47ad-a24a-e892d7264dad",
   "metadata": {},
   "source": [
    "基础面积图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "14577aae-9e0f-459e-8775-1a9cf59d1998",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'D:\\\\jupyter\\\\基础面积的折线图.html'"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts.charts import Line  # 加载折线图模块\n",
    "from pyecharts.globals import ThemeType\n",
    "from pyecharts.globals import JsCode\n",
    "import pyecharts.options as opts\n",
    "import pandas as pd\n",
    "data = pd.read_excel('./data/subject.xlsx')\n",
    "# 将‘month’列转换为字符串形式的年月  转换成字符串方便在网页中显示\n",
    "data['Month'] = data['Month'].apply(lambda x: x.strftime('%Y-%m'))\n",
    "\n",
    "# 提取名为\"AI-NLP\"的数据，并将“month”，‘average’，‘peak’转换为列表\n",
    "data_pair = data[data['Name']=='AI-NLP'][['Month','Average','Peak']].values.tolist()\n",
    "\n",
    "# 定义线条样式\n",
    "style_1 = {\"normal\":{\n",
    "                    \"shadowColor\":'rgba(0,0,0,.3)',\n",
    "                    \"shadowBlur\":0,\n",
    "                    \"shadowOffSetY\":2,\n",
    "                    \"shadowOffSetX\":2,\n",
    "                    \"width\":2}}\n",
    "style_2 = {\"normal\":{\n",
    "                    \"shadowColor\":'rgba(0,0,0,.3)',\n",
    "                    \"shadowBlur\":0,\n",
    "                    \"shadowOffSetY\":2,\n",
    "                    \"shadowOffSetX\":2,\n",
    "                    \"width\":2}}\n",
    "# 创建折线图\n",
    "line = (Line(init_opts=opts.InitOpts(ThemeType.MACARONS))\n",
    "        .add_xaxis([i[0] for i in data_pair][::-1]) # 添加x轴数据\n",
    "        .add_yaxis('kaggle竞赛平均在线人数',[i[1]/10000 for i in data_pair][::-1], # 添加y轴数据（平均在线人数）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   linestyle_opts=style_1, # 添加线条样式 完成y轴整个属性的添加\n",
    "                   \n",
    "                   areastyle_opts=opts.AreaStyleOpts(opacity=0.6) # 区域填充演示，opacity表示不透明度\n",
    "                   \n",
    "                  )\n",
    "        .add_yaxis('kaggle竞赛平均在线峰值',[i[2]/10000 for i in data_pair][::-1], # 添加y轴数据（平均在线人数）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   linestyle_opts=style_2, # 添加线条样式 完成y轴整个属性的添加\n",
    "\n",
    "                   areastyle_opts=opts.AreaStyleOpts(opacity=0.6) # 区域填充演示，opacity表示不透明度\n",
    "                   \n",
    "                  )\n",
    "        .set_global_opts(\n",
    "            title_opts=opts.TitleOpts(title='基础面积折线图-统计当地kaggle在线人数和峰值'),\n",
    "            tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross') # 设置提示框\n",
    "        )\n",
    "        .set_series_opts(\n",
    "            label_opts=opts.LabelOpts(is_show=False),\n",
    "            # 折线图要想显示文字，则必须使用markpoint_opts中加入MarkPointItem 切记与柱形图做法不一样\n",
    "            markpoint_opts=opts.MarkPointOpts(data=[\n",
    "                opts.MarkPointItem(type_='max',name='最大值'),\n",
    "                opts.MarkPointItem(type_='min',name='最小值'),\n",
    "            ])\n",
    "        )\n",
    "    )\n",
    "line.render('基础面积的折线图.html')\n",
    "# 不明白图像区域填充颜色为啥是绿色"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7093ab7-4443-48b2-8c9a-1f080e964f7a",
   "metadata": {},
   "source": [
    "【4】"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "303836a8-fd76-4ecb-bc3e-83d1cdc7d818",
   "metadata": {},
   "source": [
    "基础面积折线图-自定义面积填充"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "f46757fa-ea82-4743-92bd-cbe44b15b136",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'D:\\\\jupyter\\\\自定义面积填充的折线图.html'"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts.charts import Line  # 加载折线图模块\n",
    "from pyecharts.globals import ThemeType\n",
    "from pyecharts.globals import JsCode\n",
    "import pyecharts.options as opts\n",
    "import pandas as pd\n",
    "data = pd.read_excel('./data/subject.xlsx')\n",
    "# 将‘month’列转换为字符串形式的年月  转换成字符串方便在网页中显示\n",
    "data['Month'] = data['Month'].apply(lambda x: x.strftime('%Y-%m'))\n",
    "\n",
    "# 提取名为\"AI-NLP\"的数据，并将“month”，‘average’，‘peak’转换为列表\n",
    "data_pair = data[data['Name']=='AI-NLP'][['Month','Average','Peak']].values.tolist()\n",
    "\n",
    "# 定义线条样式\n",
    "style_1 = {\"normal\":{\n",
    "                    \"shadowColor\":'rgba(0,0,0,.3)',\n",
    "                    \"shadowBlur\":0,\n",
    "                    \"shadowOffSetY\":2,\n",
    "                    \"shadowOffSetX\":2,\n",
    "                    \"width\":2}}\n",
    "style_2 = {\"normal\":{\n",
    "                    \"shadowColor\":'rgba(0,0,0,.3)',\n",
    "                    \"shadowBlur\":0,\n",
    "                    \"shadowOffSetY\":2,\n",
    "                    \"shadowOffSetX\":2,\n",
    "                    \"width\":2}}\n",
    "\n",
    "# 定义区域填充样式\n",
    "area_style_1 = {\"normal\":{\n",
    "    \"color\":JsCode(\"\"\"new echarts.graphic.LinearGradient(0,0,0,1,[{\n",
    "    offset:0,\n",
    "    color:'rgba(0,202,149,0.3)'\n",
    "    },{\n",
    "        offset:1,\n",
    "        color:'rgba(0,202,149,0)'\n",
    "    }\n",
    "    ],false)\"\"\"),\n",
    "    \"shadowColor\":'rgba(0,202,149,0.9)',\n",
    "    \"shadowBlur\":20\n",
    "}}\n",
    "area_style_2 = {\"normal\":{\n",
    "    \"color\":JsCode(\"\"\"new echarts.graphic.LinearGradient(0,0,0,1,[{\n",
    "    offset:0,\n",
    "    color:'rgba(255,105,180,0.6)'\n",
    "    },{\n",
    "        offset:1,\n",
    "        color:'rgba(255,105,180,0)'\n",
    "    }\n",
    "    ],false)\"\"\"),\n",
    "    \"shadowColor\":'rgba(108,80,243,0.9)',\n",
    "    \"shadowBlur\":20\n",
    "}}\n",
    "\n",
    "# 创建折线图\n",
    "line = (Line(init_opts=opts.InitOpts(ThemeType.DARK,bg_color='#080b30'))\n",
    "        .add_xaxis([i[0] for i in data_pair][::-1]) # 添加x轴数据\n",
    "        .add_yaxis('kaggle竞赛平均在线人数',[i[1]/10000 for i in data_pair][::-1], # 添加y轴数据（平均在线人数）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   linestyle_opts=style_1, # 添加线条样式 完成y轴整个属性的添加\n",
    "\n",
    "                   areastyle_opts=area_style_1\n",
    "                   \n",
    "                  )\n",
    "        .add_yaxis('kaggle竞赛平均在线峰值',[i[2]/10000 for i in data_pair][::-1], # 添加y轴数据（平均在线人数）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   linestyle_opts=style_2, # 添加线条样式 完成y轴整个属性的添加\n",
    "\n",
    "                   areastyle_opts=area_style_2\n",
    "                   \n",
    "                  )\n",
    "        .set_global_opts(\n",
    "            title_opts=opts.TitleOpts(title='基础自定义面积填充折线图-统计当地kaggle在线人数和峰值'),\n",
    "            tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross') # 设置提示框\n",
    "        )\n",
    "        .set_series_opts(\n",
    "            label_opts=opts.LabelOpts(is_show=False),\n",
    "            # 折线图要想显示文字，则必须使用markpoint_opts中加入MarkPointItem 切记与柱形图做法不一样\n",
    "            markpoint_opts=opts.MarkPointOpts(data=[\n",
    "                opts.MarkPointItem(type_='max',name='最大值'),\n",
    "                opts.MarkPointItem(type_='min',name='最小值'),\n",
    "            ])\n",
    "        )\n",
    "    )\n",
    "line.render('自定义面积填充的折线图.html')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ce0dc9e3-5f80-496b-ab99-945c64d471f5",
   "metadata": {},
   "source": [
    "【5】"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "95cedd93-ca30-49db-a0b0-02f13e1333a3",
   "metadata": {},
   "source": [
    "基础折线面积图-堆叠面积自定义填充图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9a284ad6-1202-4229-b65c-527c9889a1bb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'D:\\\\jupyter\\\\基础堆叠面积填充折线图.html'"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts.charts import Line  # 加载折线图模块\n",
    "from pyecharts.globals import ThemeType\n",
    "from pyecharts.globals import JsCode\n",
    "import pyecharts.options as opts\n",
    "import pandas as pd\n",
    "data = pd.read_excel('./data/subject.xlsx')\n",
    "# 将‘month’列转换为字符串形式的年月  转换成字符串方便在网页中显示\n",
    "data['Month'] = data['Month'].apply(lambda x: x.strftime('%Y-%m')) # 转换为YYYY-MM格式字符串\n",
    "\n",
    "# 提取名为\"AI-NLP\"的数据，并将“month”，‘average’，‘peak’转换为列表\n",
    "data_pair = data[data['Name']=='AI-NLP'][['Month','Average','Peak']].values.tolist()\n",
    "\n",
    "# 自定义线条样式\n",
    "style_1 = {\"normal\":{  # 定义第一条线的样式\n",
    "    \"shadowColor\":'rgba(0,0,0,.3)',  # 阴影颜色\n",
    "    \"shadowBlur\":0, # 阴影的模糊度\n",
    "    \"shadowOffsetY\":2, # 阴影y方向偏移\n",
    "    \"shadowOffsetX\":2, # 阴影x方向偏移\n",
    "    \"width\":2 # 线宽\n",
    "}}\n",
    "\n",
    "# 自定义渐变色\n",
    "color1 = JsCode(\"\"\"new echarts.graphic.LinearGradient(  \n",
    "0,0,0,1, \n",
    "[{offset:0,color:'rgba(255,0,135)'},  \n",
    "{offset:1,color:'rgba(135,0,157)'}], \n",
    "false)\n",
    "\"\"\")\n",
    "color2 = JsCode(\"\"\"new echarts.graphic.LinearGradient(  \n",
    "0,0,0,1, \n",
    "[{offset:0,color:'rgba(128,255,165)'}, \n",
    "{offset:1,color:'rgba(1,191,236)'}],\n",
    "false)\n",
    "\"\"\")\n",
    "\n",
    "# 创建折线图\n",
    "line = (Line(init_opts=opts.InitOpts(ThemeType.DARK,bg_color='#080b30'))\n",
    "        .add_xaxis([i[0] for i in data_pair][::-1]) # 添加x轴数据（月份），并反转顺序\n",
    "        .add_yaxis('kaggle竞赛平均在线人数',[i[1]/10000 for i in data_pair][::-1], # 添加y轴数据（平均在线人数）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   linestyle_opts=style_1, # 添加线条样式 完成y轴整个属性的添加\n",
    "                   areastyle_opts=opts.AreaStyleOpts(opacity=0.6,color=color1) # 区域填充演示，opacity表示不透明度\n",
    "                  )\n",
    "        .add_yaxis('kaggle竞赛平均在线峰值',[i[2]/10000 for i in data_pair][::-1], # 添加y轴数据（平均在线人数）\n",
    "                   is_smooth=True, # 是否是平滑曲线\n",
    "                   linestyle_opts=style_1, # 添加线条样式 完成y轴整个属性的添加\n",
    "                   areastyle_opts=opts.AreaStyleOpts(opacity=0.6,color=color2) # 区域填充演示，opacity表示不透明度\n",
    "                  )\n",
    "        .set_global_opts(\n",
    "            title_opts=opts.TitleOpts(title='基础堆叠面积填充折线图-统计当地kaggle在线人数和峰值'),\n",
    "            tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross') # 设置提示框\n",
    "        )\n",
    "        .set_series_opts(\n",
    "            label_opts=opts.LabelOpts(is_show=False),\n",
    "            # 折线图要想显示文字，则必须使用markpoint_opts中加入MarkPointItem 切记与柱形图做法不一样\n",
    "            markpoint_opts=opts.MarkPointOpts(data=[\n",
    "                opts.MarkPointItem(type_='max',name='最大值'),\n",
    "                opts.MarkPointItem(type_='min',name='最小值'),\n",
    "            ])\n",
    "       )\n",
    ")\n",
    "line.render('基础堆叠面积填充折线图.html')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
